查看原文
其他

OpenCV全面支持RISC-V CPU & 跑分结果

OpenCV中国团队 OpenCV团队 2022-04-06

简介

RISC-V是一套开放指令集,与公司持有版权的X86ARM指令集不同,被寄予了厚望。RISC-V指令集的推广,需要构建一个完整的生态系统,这个生态系统包含CPU硬件、编译器、操作系统和其他基础软件、以及各种应用软件在内的许多硬件和软件。

OpenCV作为计算机视觉领域的关键软件库,一直重视对开放平台平台的支持。OpenCV2020年初开始增加对RISC-V的支持,使用RISC-V向量指令RVVOpenCV中的算法进行加速。此项工作OpenCV中国团队,联合中科院软件所PLCT实验室和平头哥公司一起完成

目前真正量产的RISC-V CPU并不多,很多软件都是在RISC-V模拟器上进行验证。全志D1芯片是第一款搭载平头哥玄铁C906处理器的SoC芯片,我们在D1芯片上对OpenCV进行了验证。初步验证表面,OpenCV普通算法和深度学习算法均可在D1芯片上运行,结果正确;特别的,OpenCV可以使用RISC-V向量扩展RVVD1上加速运行。

全志D1-哪吒开发板

OpenCV Zoo在玄铁C906上的Benchmark结果

我们使用OpenCV Zoo (https://github.com/opencv/opencv_zoo)中的人脸检测模型YuNet分别在搭载了玄铁C906核心的全志D1 SoC以及Cortex A72 ARM处理器上进行了Benchmark测试。此两款处理器的技术规格对比和测试结果如下表所示:

处理器

玄铁C906

Cortex A72

架构

RISC-V

ARM v8

主频

1.0GHz

1.5GHz

核心数

1

4

向量指令

RVV 0.7.1

NEON

YuNet单次推理平均耗时

86.69 ms

6.22 ms


需要特别注意的是,玄铁C906主频仅有1.0GHz,且只有一个CPU内核。这个内核在处理操作系统的任务之外,留给计算的资源并不多。考虑主频和核心数的影响,我们对玄铁C906上的耗时进行简单的换算,假设二者主频和核心数一致,玄铁C906上的耗时约是Cortex A72的二倍这里的理论性能差距来自于向量计算资源的差别。概括来说,C906的向量计算执行单元为64位,而其寄存器是128位,因此C906需要把一条指令拆成两条微指令来执行,造成二倍的理论性能差距。考虑到OpenCVARM v8 neon指令集的支持更加成熟,此CPU支持的RVV是较早的0.7.1版本,初出茅庐的RISC-V处理器未来可期

RISC-V平台编译OpenCV

OpenCV Wiki (https://github.com/opencv/opencv/wiki/OpenCV-RISC-V) 中提供了交叉编译RISC-V下的OpenCV的教程,本文不再赘述。
欢迎访问OpenCV Zoo & Benchmark (https://github.com/opencv/opencv_zoo)了解OpenCV在更多硬件平台上的表现。点击阅读原文即可访问OpenCV Zoo。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存